content_scripts
Typ | Array |
---|---|
Verpflichtend | Nein |
Manifest-Version | 2 oder höher |
Beispiel |
json
|
Weist den Browser an, content scripts in Webseiten zu laden, deren URL einem Muster entspricht.
Dieser Schlüssel ist ein Array. Jedes Element ist ein Objekt, das:
- muss einen Schlüssel namens
matches
enthalten, der die URL-Muster angibt, die für die zu ladenden Skripte übereinstimmen sollen; - kann Schlüssel namens
js
undcss
enthalten, die Skripte und Stylesheets auflisten, die in übereinstimmenden Seiten geladen werden sollen; und - kann eine Reihe anderer Eigenschaften enthalten, die Aspekte steuern, wie und wann Content-Skripte geladen werden.
Diese Tabelle zeigt alle Schlüssel, die Sie einfügen können.
Name | Typ | Beschreibung |
---|---|---|
all_frames
|
Boolean |
Standardwert ist |
css
|
Array |
Ein Array von Pfaden, relativ zu Hinweis: Firefox löst URLs in injizierten CSS-Dateien relativ zur CSS-Datei selbst auf, und nicht zur Seite, in die sie injiziert werden. |
exclude_globs
|
Array |
Ein Array von Zeichenfolgen, die Wildcards enthalten. Siehe Übereinstimmung von URL-Mustern unten. |
exclude_matches
|
Array |
Ein Array von Match-Mustern. Siehe Übereinstimmung von URL-Mustern unten. |
include_globs
|
Array |
Ein Array von Zeichenfolgen, die Wildcards enthalten. Siehe Übereinstimmung von URL-Mustern unten. |
js
|
Array |
Ein Array von Pfaden, relativ zu |
match_about_blank
|
Boolean |
Die Content-Skripte in Seiten einfügen, deren URL
Dies ist besonders nützlich, um Skripte in leere iframes auszuführen, deren URL
Beispiel: Angenommen, Sie haben einen json
Wenn der Benutzer
Hinweis:
Beachten Sie, dass in Firefox Content-Skripte nicht in leere iframes bei |
match_origin_as_fallback
|
Boolean |
Wenn true , wird Code in about: , data: und blob: Seiten injiziert, wenn ihr Ursprung dem Muster in matches entspricht, selbst wenn der Dokumentenursprung undurchsichtig ist (aufgrund der Verwendung von CSP oder iframe-Sandbox). Die Match-Muster in matches müssen ein Wildcard-Pfad-Glob angeben. Standardwert ist false .
|
matches
|
Array |
Ein Array von Match-Mustern. Siehe Übereinstimmung von URL-Mustern unten. Dies ist der einzige verpflichtende Schlüssel. |
run_at
|
String |
Diese Option bestimmt, wann die in
Der Standardwert ist
In allen Fällen werden Dateien in |
world
|
String |
Die JavaScript-Welt, in der das Skript ausgeführt wird.
Der Standardwert ist |
Ladereihenfolge
Registrierte Objekte in content_scripts
werden zu der von run_at
angegebenen Zeit in übereinstimmende Webseiten injiziert (zuerst document_start
, dann document_end
und schließlich document_idle
):
- In der im
content_scripts
-Array angegebenen Reihenfolge, für jedes Objekt mit einem passendenrun_at
-Wert, dann:- CSS wird in der Reihenfolge angewendet, die in seinem
css
-Array angegeben ist. - JavaScript-Code wird in der Reihenfolge ausgeführt, die in seinem
js
-Array angegeben ist.
- CSS wird in der Reihenfolge angewendet, die in seinem
Zum Beispiel, in dieser Schlüssel-Spezifikation:
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["jquery.js", "my-content-script.js"],
"run_at": "document_idle"
},
{
"matches": ["*://*.mozilla.org/*"],
"css": ["my-css.css"],
"js": ["another-content-script.js", "yet-another-content-script.js"],
"run_at": "document_idle"
},
{
"matches": ["*://*.mozilla.org/*"],
"js": ["run-first.js"],
"run_at": "document_start"
}
]
Die Dateien werden so geladen, wenn eine mozilla.org-Domain geöffnet wird:
"run-first.js"
- weil es angefordert wird, bei"document_start"
ausgeführt zu werden."jquery.js"
- weil es im ersten Array angefordert wird, bei"document_idle"
ausgeführt zu werden."my-content-script.js"
- weil es das zweite Element im ersten Array ist, das bei"document_idle"
ausgeführt werden soll."my-css.css"
- weil das CSS eines Objekts vor seinem JavaScript geladen wird."another-content-script.js"
- weil es das erste Element in derjs
-Eigenschaft ist."yet-another-content-script.js"
Übereinstimmung von URL-Mustern
Der "content_scripts"
-Schlüssel hängt Content-Skripte an Dokumente basierend auf der URL-Übereinstimmung an: Wenn die URL des Dokuments der im Schlüssel angegebenen Spezifikation entspricht, wird das Skript angehängt. Es gibt vier Eigenschaften innerhalb von "content_scripts"
, die Sie für diese Spezifikation verwenden können:
matches
-
ein Array von Match-Mustern
exclude_matches
-
ein Array von Match-Mustern
include_globs
-
ein Array von globs
exclude_globs
-
ein Array von globs
Um eine dieser Eigenschaften abzugleichen, muss eine URL mindestens eines der Elemente in ihrem Array erfüllen. Beispiel: Angenommen, eine Eigenschaft sieht so aus:
"matches": ["*://*.example.org/*", "*://*.example.com/*"]
Sowohl http://example.org/
als auch http://example.com/
werden übereinstimmen.
Da matches
der einzige verpflichtende Schlüssel ist, werden die anderen drei Schlüssel verwendet, um die URLs weiter einzuschränken, die übereinstimmen. Um dem Schlüssel insgesamt zu entsprechen, muss eine URL:
- mit der
matches
-Eigenschaft übereinstimmen - UND mit der
include_globs
-Eigenschaft übereinstimmen, falls vorhanden - UND NICHT mit der
exclude_matches
-Eigenschaft übereinstimmen, falls vorhanden - UND NICHT mit der
exclude_globs
-Eigenschaft übereinstimmen, falls vorhanden
globs
Ein Glob ist einfach eine Zeichenfolge, die Wildcards enthalten kann.
Es gibt zwei Arten von Wildcards, und Sie können sie im selben Glob kombinieren:
*
entspricht null oder mehr Zeichen?
entspricht genau einem Zeichen.
Zum Beispiel: "*na?i"
würde "illuminati"
und "annunaki"
, aber nicht "sagnarelli"
entsprechen.
Beispiel
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
]
Dies injiziert ein einziges Content-Skript borderify.js
in alle Seiten unter mozilla.org
oder einem seiner Subdomains, egal ob über HTTP oder HTTPS bereitgestellt.
"content_scripts": [
{
"exclude_matches": ["*://developer.mozilla.org/*"],
"matches": ["*://*.mozilla.org/*"],
"js": ["jquery.js", "borderify.js"]
}
]
Dies injiziert zwei Content-Skripte in alle Seiten unter mozilla.org
oder einem seiner Subdomains, außer developer.mozilla.org
, egal ob über HTTP oder HTTPS bereitgestellt.
Die Content-Skripte sehen denselben DOM-Ansicht und werden in der Reihenfolge injiziert, in der sie im Array erscheinen, sodass borderify.js
globale Variablen sehen kann, die von jquery.js
hinzugefügt wurden.